Requirements:
Python (3.7 known to work)
scipy (1.3.0 known to work)
numpy (1.17.3 known to work)
matplotlib (3.1.0 known to work)

Instructions to reproduce the figures from the accompanying article:

Figure 1 is not original simulation results, reproduced from an experimental work with permission.  Setting the lambdas and timing parameters to those found in the text <insert parameters here> and uncommenting lines 

Figure 2: The raster plots incorporated into this figure can be obtained by running CA1_Simulation.py three times.  Ensure that lines 385-414 (marked "Uncomment this to plot the raster of input populations") are uncommented.  To get the match condition, run it once with the primed variable (line 21) set to True.  For the unmatched condition, run it once with the primed variable set to False.  For the "novelty per se" condition run it once with the primed variable set to True but the predictionELambda and predictionILambda variables (lines 63 and 64) set to 0.0001 instead of their usual 0.01.

Figure 3: The voltage traces incorporated into this figure can be obtained by running CA1_Simulation.py three times.  Ensure that lines 261-270 (marked "Uncomment this to plot the Basal Voltage Trace") are uncommented.  To get the match condition, run it once with the primed variable (line 21) set to True.  For the unmatched condition, run it once with the primed variable set to False.  For the "novelty per se" condition run it once with the primed variable set to True but the predictionELambda and predictionILambda variables (lines 63 and 64) set to 0.0001 instead of their usual 0.01.

Figure 4:  The voltage traces incorporated into this figure can be obtained by running CA1_Simulation.py four times.  Ensure that lines 261-270 (marked "Uncomment this to plot the Basal Voltage Trace") are uncommented.  For the "Reduced EC3 Priming Excitation" plots, change the pharmas variable to 'noEPrime' (comment line 30 and uncomment line 36) and set the sensoryELambda variable on line 66 to 0.0001.  Then run the program once with the primed variable (line 21) set to True (for the match condition), and once with it set to False (for mismatch).  For the "Reduced EC3 Priming Inhibition" plots, change the pharmas variable to 'noIPrime' (comment line 30 and uncomment line 37)and set the sensoryILambda variable on line 67 to 0.0001.  Then run the program once with the primed variable (line 21) set to True (for the match condition), and once with it set to False (for mismatch).

Figure 5:  The voltage traces incorporated into this figure can be obtained by running CA1_Simulation.py four times.  Ensure that lines 261-270 (marked "Uncomment this to plot the Basal Voltage Trace") are uncommented.  For the "KCNQ Agonism" plots, change the pharmas variable to 'Retigabine' (comment line 30 and uncomment line 32) and set the Retigabine variable to True on line 25.  Then run the program once with the primed variable (line 21) set to True (for the match condition), and once with it set to False (for mismatch).  For the "KCNQ Antagonism" plots, change the pharmas variable to 'ACh' (comment line 30 and uncomment line 34) and set the ACh variable to True on line 24.  Ensure that the Retigabine variable has been returned to False if you set it to True before, then run the program once with the primed variable (line 21) set to True (for the match condition), and once with it set to False (for mismatch).

Figure 6:  The voltage traces incorporated into this figure can be obtained by running CA1_Simulation.py four times.  Ensure that lines 261-270 (marked "Uncomment this to plot the Basal Voltage Trace") are uncommented.  For the "KCNQ Agonism" plots, change the pharmas variable to 'Retigabine' (comment line 30 and uncomment line 32) and set the Retigabine variable to True on line 25.  Then run the program once with the primed variable (line 21) set to True (for the match condition), and once with it set to False (for mismatch).  For the "KCNQ Antagonism" plots, change the pharmas variable to 'ACh' (comment line 30 and uncomment line 34) and set the ACh variable to True on line 24.  Ensure that the Retigabine variable has been returned to False if you set it to True before, then run the program once with the primed variable (line 21) set to True (for the match condition), and once with it set to False (for mismatch).

Figure 7: The plots contained in this figure can be generated by running CA1_Robustness.py exactly as distributed.  Please note that since this is a stochastic process the exact plots generated may vary.